package com.yilin.platform.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yilin.platform.base_core.application.PageData;
import com.yilin.platform.base_core.tools.pab.entity.req.ReqBodyEDZ002;
import com.yilin.platform.base_core.tools.pab.entity.req.ReqBodyELC010;
import com.yilin.platform.base_core.tools.pab.entity.res.*;
import com.yilin.platform.entity.pab.PabDockingLog;
import com.yilin.platform.entity.pab.PabFileDownLoad;
import com.yilin.platform.entity.pab.PabTradeRecord;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface IBankPabService extends IService<PabTradeRecord> {
    PabTradeRecord singleTrade(PabTradeRecord tradeRecord);

    String batchTrade(List<PabTradeRecord> tradeRecordList);

    void dealSingleQueryTrade();

    ResBody4005 singleQueryTrade(String tradeNo);

    void dealBatchQueryTrade();

    ResBody4015 batchQueryTrade(String batchNo, String queryType, Integer page, Integer limit);

    ResBody4001 queryAccount(String tradeNo);

    ResBody4013 queryTradeDetails(String bankAccountNo, Date startDate, Date endDate, Integer page, Integer limit);

    ResBodyF00101 reqTradeDetailsDownloadList(Date queryDate, String bankAccountNo, String bsnCode);


    ResBody4019 reqPaymentRefundQuery(String accNo, Date startDate, Date endDate, Integer page, Integer limit);


    void taskReqPaymentRefundQuery(Integer page);

    ResBodyELC009 reqTradeReceiptList(String outAccNo, Date beginDate, Date endDate, String inAccNo, Integer page, Integer limit);

    ResBodyELC010 createReceiptDownloadPDF(String outAccNo, Date beginDate, Date endDate, String pdfNum, List<ReqBodyELC010.ReqBodyELC010Item> list);

    ResBodyEDZ001 getTradeReconPage(String outAccNo, Date queryDate, String checkFlag, Integer page, Integer limit);

    ResBodyEDZ002 syncTradeResult(String acctNo, String balanceDate, List<ReqBodyEDZ002.ReqBodyEDZ002Item> itemList);

    ResBodyFILE03 reqDownloadTradeDetails(String fileName, String randomPwd);

    PageData<PabFileDownLoad> getPabFileDownLoadList(Integer page, Integer limit);

    List<PabTradeRecord> getTradeRecordsByBatchNo(String batchNo);

    PageData<PabTradeRecord> getTradeRecordPage(
            PabTradeRecord.PabTradeStatus pabTradeStatus,
            String inAcctName,
            Integer page, Integer limit);

    PabTradeRecord getTradeRecordByNo(String tradeNo);


    List<PabTradeRecord> getTradeRecordByNoList(String[] tradeNos);

    PabFileDownLoad getFileDownLoadBySn(String tradeSn);

    String dealPabCallReq(String pabReqXml);

    PageData<PabDockingLog> getDockingLogPage(Integer page, Integer limit);

    String generateFileDownload(String fileName);

    Map<String, String> getServerStatusBag();


}
